package com.foreveross.proxyip.application.offer;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;

import com.foreveross.proxyip.application.offer.bean.ProxyIpDTO;

/**
 * 代理IP服务的远程RMI接口
 * @author xiangsf 2013-05-30
 *
 */
public interface IProxyIPRMIService extends Remote {

	/**
	 * 获得默认渠道池中的一个代理IP
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	* @deprecated 2013-07-08 注释
	 */
//	@Deprecated
//	public ProxyIpDTO getProxyIp(String auth) throws Exception;
	
	/**
	 * update date:2013-07-08
	 * 获得默认渠道池中的一个代理IP
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	 * @param clientIp 申请机本地ip地址
	 */
	public ProxyIpDTO getProxyIp(String auth,String clientIp) throws Exception;
	/**
	 * 获得默认渠道池中的多个代理IP
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	 * @param size 一次获取的IP数量
	* @deprecated 2013-07-08 注释
	 */
//	@Deprecated
//	public List<ProxyIpDTO> getProxyIps(int size, String auth) throws Exception;
	/**
	 * update date:2013-07-08
	 * 
	 * 获得默认渠道池中的多个代理IP
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	 * @param size 一次获取的IP数量
	 * @param clientIp 申请机本地ip地址
	 */
	public List<ProxyIpDTO> getProxyIps(int size, String auth,String clientIp) throws Exception;
	/**
	 * 获得指定渠道池中的一个代理IP
	 * @param channel 已在代理IP服务上注册的渠道标识
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
 	 * @deprecated 2013-07-08 注释
	 */
//	@Deprecated
//	public ProxyIpDTO getChannelProxyIp(String channel, String auth) throws Exception;
	/**
	 * update date:2013-07-08
	 * 获得指定渠道池中的一个代理IP
	 * @param channel 已在代理IP服务上注册的渠道标识
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	 * @param clientIp 申请机本地ip地址
	 */
	public ProxyIpDTO getChannelProxyIp(String channel, String auth,String clientIp) throws Exception;
	/**
	 * 获得指定渠道池中的多个代理IP
	 * @param channel 已在代理IP服务上注册的渠道标识
	 * @param size 一次获取的IP数量
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	 * @return
	 * @deprecated 2013-07-08 注释
	 */
//	@Deprecated
//	public List<ProxyIpDTO> getChannelProxyIps(String channel , int size, String auth) throws Exception;
	
	/**
	 * update date:2013-07-08
	 * 获得指定渠道池中的多个代理IP
	 * @param channel 已在代理IP服务上注册的渠道标识
	 * @param size 一次获取的IP数量
	 * @param auth 加密权限标识码，由代理IP服务方提供给各个客户端
	 * @param clientIp 申请机本地ip地址
	 * @return
	 */
	public List<ProxyIpDTO> getChannelProxyIps(String channel , int size, String auth,String clientIp) throws Exception;
	
	/**
	 * 回收单个由代理IP服务方提供出去的代理IP对象,必须传入proxyIp渠道id
	 * @param proxyIp　由代理IP服务方提供出去的代理IP对象
	 * @param auth　加密权限标识码，由代理IP服务方提供给各个客户端
	 * @return　回收成功返回true,否则返回false
	 */

	public boolean recycle(ProxyIpDTO proxyIp, String auth) throws Exception;
}
